#include "SyncInitMessage.h"

vsznDefault(SyncInitMessage);

SyncInitMessage::SyncInitMessage()
{
}

SyncInitMessage::SyncInitMessage(SyncPtr sync, bool ack) :
        tag(sync->get_tag()),
        name(sync->get_name().string()),
        mine_path(sync->get_mine_path_partner_version()),
        your_path(sync->get_their_path().string()),
        sync_type((uint8_t) sync->get_sync_type()),
        role((uint8_t) sync->get_role()),
        ack((uint8_t) ack)
{
}

SyncInitMessage::~SyncInitMessage()
{
}


// TODO irgendwie bin ich mir nun unsicher, ob hier direkt ein Sync-Objekt erstellt werden sollte..
// Insbesondere, da die ganzen checks in Dir_syncer erst gemacht werden.. Naja, der explizite scan()-Aufruf dämpft das Problem etwas.
SyncPtr SyncInitMessage::get_sync()
{
    // new sync object
    SyncPtr sync(new Sync());
    sync->set_tag(tag);
    sync->set_mine_path(boost::filesystem::path(your_path));      // NOTE: inverted
    sync->set_name(name);
    sync->set_their_path(boost::filesystem::path(mine_path));     // NOTE: inverted
    sync->set_sync_type_and_role_inverted((Sync::SyncType) sync_type, (Sync::Role) role);

    return sync;
}

bool SyncInitMessage::is_ack()
{
    return (bool) ack;
}







